cmake_minimum_required(VERSION 3.18)

# ######################################################################################################################
# Check submodules are here
# ######################################################################################################################
find_path(CTAGS_SUBMODULE CMakeLists.txt PATHS ${CMAKE_CURRENT_SOURCE_DIR}/ctags/)
if(NOT CTAGS_SUBMODULE)
    message(STATUS "Could not locate `${CMAKE_CURRENT_SOURCE_DIR}/ctags/CMakeLists.txt` file")
    message(FATAL_ERROR "Please make sure you have run `git submodule update --init`")
endif()

# ######################################################################################################################
# cJSON
# ######################################################################################################################
add_library(cJSON STATIC ${CMAKE_CURRENT_SOURCE_DIR}/cJSON/cJSON.c ${CMAKE_CURRENT_SOURCE_DIR}/cJSON/cJSON.h)
target_include_directories(cJSON PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/cJSON)

# ######################################################################################################################
# For wxWidgets dependencies
# ######################################################################################################################
include("${wxWidgets_USE_FILE}")

# ######################################################################################################################
# wxshapeframework
# ######################################################################################################################
file(GLOB WXSF_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/wxsf-code/src/*.cpp"
     "${CMAKE_CURRENT_SOURCE_DIR}/wxsf-code/src/wxxmlserializer/*.cpp")
add_library(wxshapeframework SHARED ${WXSF_SRCS})

target_include_directories(wxshapeframework PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/wxsf-code/src")
target_include_directories(wxshapeframework PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/wxsf-code/include")

if(WIN32)
    target_compile_definitions(wxshapeframework PRIVATE WXMAKINGDLL_WXXS WXMAKINGDLL_WXSF)
    target_compile_definitions(wxshapeframework INTERFACE WXUSINGDLL)
endif(WIN32)

if(UNIX OR APPLE)
    set_target_properties(wxshapeframework PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()

target_link_libraries(wxshapeframework PRIVATE ${LINKER_OPTIONS} ${wxWidgets_LIBRARIES})

codelite_install_library_target(wxshapeframework)
